DIST.30 「一歩差がつくCSSテクニック」
https://gyazo.com/831a8332bed9d4be8fa2cd8592be5582
https://dist.connpass.com/event/155593/
Google Material DesignのCSS設計をみてみよう!!(仮)
山本 康介
株式会社センティリオンシステム SE・プログラマ
Google
デザインシステム
紙・インク
material.io
vuetify
Angular Material
material-ui
material components for the Web
https://github.com/material-components/material-components-web
npm i @material/button
packages.json
sass
typescript
mdc-buton
BEMのクラス表現
mdc-button-core-styles
3行
_mixins.scss
include
mdc-button-without-ripple
.mdc-buttonが本体
includeで更に呼び出し
半径の大きさ
カラー処理
disabled
ユーザが変更できるように
アニメーション
.mdc-ripple
animation
@keyframes
HTMLとCSSだけでつくるリアルな絵
西原 翼/ crayfisher_zari
株式会社ICS インタラクションデザイナー
直接的には実務では役に立たない
https://codepen.io/Nishihara/pen/ExxYxJm
水滴
ハイライト1
border
border-radius
transform
filter
ハイライト2
border-radius
filter
ぼかし
radial-gradient
クロソイド曲線
100%近くでなめらかな値になる
https://codepen.io/lhermann/pen/qmpMGQ
フチ
box-shadow
外側
内側
グラデーションとぼかしをこねくり回すといい感じに鳴る
CSSアニメーションの狂気
中矢 雄介
株式会社オロ、Meguro.css テクニカルクリエイター
狂気の方向に一歩に差がつく
もっと遊んでほしい
テクニック
リキッド
流体・液体表現
https://codepen.io/YusukeNakaya/pen/BONemg
filter: blur() contrast()
3D
https://codepen.io/YusukeNakaya/pen/KZrxYa
transform-style: preserve-3d
クリップスライス
clip-path: polygon
令和元年ベストのfont-familyはこれだ
https://speakerdeck.com/clockmaker/better-font-family-2019-in-japanese
池田 泰延
株式会社ICS 代表
font-family
-apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans", "Hiragino Kaku Gothic ProN", Meirio, sans-serif;
ボールド
font-weight: 600;
ウェブフォント
重い
初回アクセス時に不利
デバイスフォントで対応
長期的な不安要素を減らす対策
sans-serifは影響うける
游ゴシック
可読性が低い
iOSには存在しない
font-face問題
62以降で効かなくなった
system-uiにも注意
結局かすれる
明朝体問題
Chromeのバグ
Hiragino Sansで対応
Safariでフォントが太る
font-weight: bold; => W8があたる
Catalina Chrome 79
和文フォントにも影響あり
アンチエイリアス
Mojaveでグレースケールの採用
細く見える
細いフォントとウェイトは指定しない
継承するcolor
https://www.slideshare.net/KobayashiShinji/dist30-kobayashi
小林 信次 koba
株式会社まぼろし 代表取締役社長COO
カスケーディング => 段階的に継承
ブラウザのユーザーエージェントスタイルは継承してくれない
ベースにcolor: inherit;
boder: 1px solid;
border-colorはcolorが継承値
fillも継承
all: unset;
もとのスタイルをリセット
継承値
レイアウトプリミティブ
https://standard.shiftbrain.com/blog/layout-primitives
安田祐平 / yuheiy
株式会社シフトブレイン/スタンダードデザインユニット フロントエンドエンジニア
テンプレートとコンポーネントをいかに堅牢にできるか
レイアウトをいかに組み立てられるか
containerというラッパーは共通化
Layouts: Every Layout
複数のレイアウトプリミティブを入れ子にできる
メディアクエリで制限しない
幅が狭いときでも横並びになる
Composition
Box
Stack
Center
CLuster
同じパターンを再利用する
ネガティブな印象なのは責務の切り分けがうまくできてない
単純な責務を与える
アクセシビリティを高めるCSS
https://noti.st/talocohc-rion/n8YnOP/css
森川 結子 / talocohc_rion
株式会社トゥーアール フロントエンドエンジニア
ウェブの本質であるアクセシビリティを守っていくのは私達の役目
focus outline
消さない
フォーカスインジケータ
キーボードだけでも操作するよおうに
Pointing Target size
タップしやすくする
震える人もいる
WCAG達成基準 2.5.5 Target Size
44×44ピクセル以上推奨
疑似要素で拡大できる
Contents Order
flexbox
order -1
コンテンツが先にくる
見出し要素より上の要素は見落としてしまう
Form Input
placeholderに値を入れるのはよくない
入力するときに見えない
支援技術側でサポートしていない
floating labels
問題点:https://medium.com/simple-human/floating-labels-are-a-bad-idea-82edb64220f6
ラベルで表示しておこう
CSSアニメーションに、なぜtransformを使ったほうが良いのか。
https://speakerdeck.com/spicez/transform-why-do-we-have-to-use-it-in-css-animation
すぱいす
株式会社エウレカ フロントエンドエンジニア
@keyframes
なめらかなアニメーション
60fpsを保ち続ける
1フレームで10msに収める
ブラウザレンダリング
pixel pipline
JS
Style
Layout
Paint
Composite
処理がすくないほうがなめらか
margin , padding, 位置系はすべてのパイプラインを通る
transformはJS、Style, Compositeのみ
Chrome開発者ツールのRenderingタブで見る
https://developers.google.com/web/fundamentals/performance/rendering?hl=ja
CSSがパフォーマンスに与える影響
和田 武
パーソルキャリア株式会社 Webディレクター、フロントエンジニア
Search Console
掲載状況の最適化時に問題あるときアラートがでる
11月にサイト速度レポート
First Contentful Paint
First Input Delay
今後追加
LCP
large contenfful paint
CLS
cumulative layout shift
CSSはどれほど影響あるか
シンプルな定義と10000回置き換えして定義
133 => 246
パースにかかる時間が多い
リサイクルする時間はかわらない
再レイアウトを増やすと指標は下がる
過度な継承はパフォーマンスが劣化
直接的な関係性ではなく、極端に遅いと判断されなければ良い
パフォーマンスを高めるCSS
泉水 翔吾 / 1000ch
株式会社メルカリ Software Engineer
より最適な形でCSSを扱いたい
ファイル圧縮する
最小化する
cssnano
csso
未使用スタイルを削除する
uncss
GitHub.icon https://github.com/uncss/uncss
DevToolsのconverage tab
CSSファイルの参照
非同期・並列のロード
結合しなくても良いかも
@importはやらない
参照先をプリロード
rel="preload"
画像やフォントでプリロード
Webフォントのロードを最適化する
フォーマットをwoff2
グリフ(文字データ)が多い
woff2_comprrss myfont.ttf
NotoSans-Regularは415 => 161KBに削減
フォントをサブセット化する
@font-face
https://developer.mozilla.org/ja/docs/Web/CSS/@font-face/unicode-range
表示ロジック
font-display